1.1 Messages

Communications

Les processeurs sont reliés en chaîne par des portes série:
hardware <->calcul<->radio<->UI ... ou plus, un processeur situé entre deux processeurs doit donc utiliser deux portes série.
Un message émis par un programme a un code numérique, qui définit sa destination et un contenu sous la forme Json.

Un message peut parcourir plusieurs processeurs avant d'arriver à celui qui peut le traiter
Le protocole (voir trf3.py) comporte une validation et admet une longueur indéterminée. Les messages erronés sont perdus .
Du point de vue hardware c'est une communication série, 8 bits sans parité , par UART ou câble USB.
La vitesse peut être importante (ceci sont des vitesses qui ont été testées entre deux pico):

Bauds durée/byte
9600 1,042 ms
115200 86.8µs
460800 21.7 µs
921600 10 µs

La durée d'un message en mode vol doit être limitée à 10ms . En mode 'sol' cette durée n'a pas d'importance, mais il faudra mesurer la proportion des messages perdus et simplement insérer des pauses dans un message long . Taille des buffers : par défaut 256, max 32766.

Chaque message est créé par un traitement , il comporte un code et des données en format Json.
Les codes sont classés par tranche ce qui définit le processeur destinataire et finalement la fonction qui traite le message.

Le module trf3.py fait la distribution dans chaque processeur:

  • un objet est créé avec
    • la porte de gauche et le code maximum qui peut être envoyé vers cette porte
    • la porte de droite et le code minimum qui peut être envoyé vers cette porte
  • les messages entrants et tous les messages produits par ce processeur sont mis en file d'attente
  • chaque message en file d'attente est traité selon son code :
    - =< limite min =>envoyer par la porte série 'gauche'
    - > limite max => envoyer à droite
    - entre : destiné à une fonction dans ce processeur
    Variante tf3b:
    les limites min et max sont supprimées, remplacées par un fichier code message => numéro de processeur

Codes :
n = affecté en émission et réception
?n = réservé
#todo à remettre à jour au fur et à mesure de la réalisation des programmes

Code Description Origine
0-20 Destiné aux fonctions hardware S
?1 demande de power off C .28
?2 périodicité en ms
0 = au coup par coup (pour le simulateur)
4 LCD :liste de lignes à afficher
5 demande d'une mesure de l'inclinomètre
2040 Destiné aux fonctions de calcul C
21 mesures hardware brutes S
22 mesures hardware simulateur
23 boutons trim simulateur
?25 transfert modèle model.py
?26 transfert paramètres model.mdp
27 le serveur demande des données
?28 demande de cloture
40-50 Destiné aux fonctions radio R
50-60 Destiné à UI
51 dictée avec copie au lcd
52 dictée sans copie au lcd
?53 commande menu
?56 mesure de l'inclinomètre
?54 ??statut (nom de phase + certains sw lcd
60..100 Destiné à UI (Laptop)
60 réponse à la demande de l'interface visuel

|